
'''
装饰器作用是为了在不改变原函数的基础上可以对原函数进行修改,为原函数添加一些其他的功能，
装饰器本身也是一个函数
使用@语法糖
@作用
    1、将被装饰函数（也就是紧挨着@下面的函数）作为参数传递给装饰器函数
    2、自动执行装饰器函数
    3、将返回值重新赋值给原函数
    4、注意@装饰器放在原函数定义的上面，而不是调用的上面
    5、如果需要加参数，可以将装饰器函数外面再套一层函数用来传参

'''
def wraper(fn): # 装饰器函数
    def inner(*args,**kwargs):
        print('开始装修。。。')
        #可以在这把被装饰的函数返回值接收
        ret = fn(*args,**kwargs)
        print('搬了一个沙发进去')
        print('搬了一个床进去')
        #在inner最后我们将返回值返回
        return ret
    return inner
# @语法糖 ，作用就是将@后面的装饰器函数自动运行，并且将要装饰的函数作为参数传递进去，然后再将返回的函数重新赋值给要装饰的函数
@wraper
def house(type,area): #要装饰的函数 ，需要增加功能的函数
    print(f'我这是一个新{type}房子,面积是{area}平米')
    return type,area

# a = wraper(house)
# house = a
# house = wraper(house)
rusult = house('两室一厅',area = 80) #此时的house 不是原来的house 而是返回来inner了
print(rusult)